import Vue from 'vue';
import Vuex from 'vuex';
// 声明使用插件
Vue.use(Vuex);
// state用来存放公共的数据，相当于data
const state = {
    count: 0
};
// getters 包含多个计算数据的对象
const getters = {
    evenOrOdd() {
        return state.count % 2 == 0 ? '偶数' : '奇数'
    }
};
// mutations 包含多个直接更改state数据的方法
const mutations = {
    add() {
        state.count++;
    },
    decrement() {
        state.count--;
    }
};
// actions 包含多个间接更改state数据的方法  通过调用mutations中的方式去间接更改state的值
const actions = {
    addIfEven({
        commit,
        state
    }) {
        if (state.count % 2 == 0) {
            // state.count++
            commit('add');
        }
    },
    decrementIfOdd({
        commit,
        state
    }) {
        if (state.count % 2 == 1) {
            setTimeout(() => {
                commit('decrement');
            }, 1000)
        }
    }


};

export default new Vuex.Store({
    state,
    getters,
    mutations,
    actions
})